ドメインイベント(Domain Event )
ドメイン内での変更の副作用を明示的に実装するには、ドメイン イベントを使います。 DDD の用語を使って言い換えるなら、複数の集約に副作用を明示的に実装するには、ドメイン イベントを使います。 また、スケーラビリティを向上させ、データベース ロックの影響を小さくする必要がある場合は、同じドメイン内の集約の間の最終的な整合性を使います。 イベントとは、過去に発生した出来事です。 ドメイン イベントはドメインで発生する出来事であり、それを同じドメイン (インプロセス) の他の部分に認識させます。 他の部分は通知を受けると、通常、イベントに何らかの方法で対処します。
ドメイン イベントの重要な利点は、副作用を明示的に表現できることです。
https://scrapbox.io/files/64420ce5de809b001b046a99.png
対象ドメインのビジネスの整理方法として、CRUDでアグリゲートの状態変更に着目する代わりに、ビジネス上で起きている主要イベントに着目して記録するアプローチがあります。会計系や在庫管理系のシステムに携わっているのであれば、既に似たアプローチを実施しているかもしれません。ドメインイベントのログが記録できれば、ログから最新状態のアグリゲートもある過去の時点の状態のアグリゲートも組み立てることが可能です。ドメインイベントはイベントソーシングやCQRSと合わせて利用されます。